package org.ricks.gateway;

import org.ricks.ioc.Ricks;

/**
 * 网关集群思路
 * 游戏客户端 - 网关 - 游戏功能模块
 * 网关维护 客户端 - 网关  socket ,   网关 - 游戏功能模块 内部路由转发  socket
 * 以全球服游戏思路，容灾情况保障服务可用  功能模块必须集群化。
 * zfoo 最开始路由思路  hash一致性路由 游戏节点。 此时产生了一个问题 如果游戏模块节点增删。此时hash环 重置构建，
 * 有些玩家必然会命中失败， 如果玩家之前在游戏节点1 游戏节点动态增删后，玩家经过hash一致性路由到游戏节点2 游戏节点2
 * 没有玩家的缓存数据 必然需要重新从db load玩家数据 如果游戏节点1 玩家缓存的数据没有save进db(游戏save机制 可能1-5分钟定时update)
 * 即使实时异步db 也有时间差情况。游戏节点2重新load 玩家数据必然可能存在数据不是实时性情况 数据丢失
 * 在zfoo群中提过这个问题后，小混混（zfoo作者）增加了新的路由策略 缓存 + hash一致性算法。 但是仔细分析服务器容灾情况 还是存在问题
 * 如果网关节点 和 游戏节点 同时增删 ， 玩家登录分配到其它网关节点上 这时候是没有路由缓存信息，还是会分配到其它的游戏节点，上述问题还是存在
 *
 * 最终方案 分布式缓存机制 + caffeine ，可以做到缓存数据一致性。 即使玩家分配到其它网关节点依赖分布式缓存机制也能做到 路由固定游戏节点
 *
 */
public class Starter {

    public static void main(String[] args) {
        Ricks.run(GatewayBoot.class,args);
    }
}
